package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main() {
	res := dayOfYear("2004-03-01")
	fmt.Println(res)
}

/*

给你一个按 YYYY-MM-DD 格式表示日期的字符串 date，请你计算并返回该日期是当年的第几天。

通常情况下，我们认为 1 月 1 日是每年的第 1 天，1 月 2 日是每年的第 2 天，依此类推。每个月的天数与现行公元纪年法（格里高利历）一致。

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/day-of-the-year
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
*/
// 润年 闰年2月29天.闰年共有366天(1-12月分别为31天,29天,31天,30天,31天,30天,31天,31天,30天,31天,30天,31天).
// 平年  31天,28天,31天,30天,31天,30天,31天,31天,30天,31天,30天,31天
func dayOfYear(date string) int {

	list1 := []int{31,29,31,30,31,30,31,31,30,31,30,31}
	list2 := []int{31,28,31,30,31,30,31,31,30,31,30,31}
	wordList := strings.Split(date, "-")
	var year int
	var month int
	var dat int
	var total int
	year,month,dat =StringToint(wordList[0]),StringToint(wordList[1]),StringToint(wordList[2])
	if month == 1 {
		return dat
	}
	if year % 4 == 0 && year % 100 != 0{ //润年
		for i:= 0 ;i < month-1;i++{
			total += list1[i]
		}
		total += dat
	}else {
		for i:= 0 ;i < month-1;i++{
			total += list2[i]
		}
		total += dat
	}

	return total
}
func StringToint(str string)int  {
	int, err := strconv.Atoi(str)
	if err != nil{
		fmt.Println(err)
		return -1
	}
	return int
}